<?php
/** 
 * 
 *
 * @package api
 * @subpackage collections
 * @author $Author$
 * @version $Id$
 */
/**
 * Interface RandomAccess
 *
 * Marker interface used by List implementations to indicate that they support fast (generally constant time) random access. 
 * The primary purpose of this interface is to allow generic algorithms to alter their behavior to provide good performance when 
 * applied to either random or sequential access lists.
 * 
 * The best algorithms for manipulating random access lists (such as ArrayList) can produce quadratic behavior when applied to 
 * sequential access lists (such as LinkedList). Generic list algorithms are encouraged to check whether the given list is an 
 * instanceof this interface before applying an algorithm that would provide poor performance if it were applied to a sequential
 * access list, and to alter their behavior if necessary to guarantee acceptable performance.
 * 
 * It is recognized that the distinction between random and sequential access is often fuzzy. For example, some List implementations
 * provide asymptotically linear access times if they get huge, but constant access times in practice. Such a List implementation 
 * should generally implement this interface. As a rule of thumb, a List implementation should implement this interface if, for 
 * typical instances of the class, this loop:
 *
 * <code>
 * for (int i=0, n=list.size(); i < n; i++)   
 * 		list.get(i);
 * </code>
 * runs faster than this loop:
 * <code>
 * 	for (CollectionIterator i=list.iterator(); i.hasNext(); )   
 *  	i.next();
 * </code>
 * 
 * This interface is a member of the PHP Collections Framework. 
 *
 * @package api
 * @subpackage collections
 * @author $Author$
 * @version $Id$
 */
interface RandomAccess { }